<?php


namespace App\Services\Game;

use App\DTOS\Admin\ServerGroupDTO;
use App\Models\Game\ConfigGroup;
use App\Models\Game\GroupChannel;
use App\Models\Game\GroupPackage;
use App\Models\Game\ServerGroup;
use App\Models\Game\Silent;
use App\Utils\MyLog;
use Illuminate\Support\Facades\DB;

class ConfigGroupService
{
    public function paginate(ServerGroupDTO $DTO){

        $model = ConfigGroup::query();
        $pageSize = $DTO->getLimit();
        $page = $DTO->getPage();
        $name = $DTO->getName();
        if($name) {
            $model->where('name','like',"%{$name}%");
        }
        return $model->orderByDesc('id')->paginate($pageSize,'*','page',$page);
    }

    public function delete($id){
        ConfigGroup::query()->where('id',$id)->delete();

        return true;
    }
    public function edit($groupId, $data) {
        // 提取需要更新的数据
        $updateData = array_only($data, ['name', 'type']);

        // 检查记录是否存在
        $configGroup = ConfigGroup::find($groupId);
        if (!$configGroup) {
            return false;
        }

        // 检查 type 是否已存在（仅在 type 被更新时）
        if (isset($updateData['type']) && ConfigGroup::where('type', $updateData['type'])->where('id', '!=', $groupId)->exists()) {
            return false;
        }

        try {
            // 更新记录
            ConfigGroup::query()->where('id',$groupId)->update($updateData);

            return true;
        } catch (\Exception $e) {
            // 处理异常，记录日志或返回错误信息
            return false;
        }
    }
    public function add($data) {
        MyLog::info('进来了么');

        $insertData = array_only($data, ['name', 'type']);
        // 检查 type 是否已存在
        if (ConfigGroup::where('type', $insertData['type'])->exists()) {
            MyLog::info('到这里了?');
            return false; // 或者返回一个错误信息
        }
        try {
            $record=   ConfigGroup::query()->insert($insertData);

            MyLog::info('插入返回值'.json_encode($record));
            return true; // 返回插入的记录
        } catch (\Exception $e) {
            // 处理异常，记录日志或返回错误信息
            return false;
        }
    }

    public function detail($id){

        $detail = ConfigGroup::query()->find($id);

        return $detail;
    }

}
